﻿using System;
using System.Collections.Generic;
using System.Linq;
using Crosland.Automotriz.Entidad;
using System.Data.SqlClient;

namespace Crosland.Automotriz.Data.Dao.Linq
{
    public class clsTD_ChannelManagementDAO
    {
        private readonly DM_CROSLAND_20130417Entities ContextoDeObjs = new DM_CROSLAND_20130417Entities();

        public List<VW_Reporte_Mapa> Listar(string departamento, string provincia, string distrito, string supervisor, string W2, string W3, string StandardizedYesNo, string W2STA, string W3STA, string StandardizedYesNoSTA, string W2REP, string W3REP, string TALLER, string VC, string RC)
        {
            List<VW_Reporte_Mapa> lista = new List<VW_Reporte_Mapa>();
            try
            {
                var pW2 = new object[] { 
                    new SqlParameter("@DES_DEPARTAMENTO", departamento),
                    new SqlParameter("@DES_PROVINCIA", provincia), 
                    new SqlParameter("@DES_DISTRITO", distrito),
                    new SqlParameter("@SUPERVISOR", supervisor), 
                    new SqlParameter("@ID_TIPO_CLASIFICACION", W2), 
                };
                var resultadoW2 = ContextoDeObjs.ExecuteStoreQuery<VW_Reporte_Mapa>("exec VW_REPORTE_MAPA_MARKETING @DES_DEPARTAMENTO,@DES_PROVINCIA,@DES_DISTRITO,@SUPERVISOR,@ID_TIPO_CLASIFICACION", pW2).AsQueryable().ToList();

                var pW3 = new object[] { 
                    new SqlParameter("@DES_DEPARTAMENTO", departamento),
                    new SqlParameter("@DES_PROVINCIA", provincia), 
                    new SqlParameter("@DES_DISTRITO", distrito),
                    new SqlParameter("@SUPERVISOR", supervisor), 
                    new SqlParameter("@ID_TIPO_CLASIFICACION", W3), 
                };
                var resultadoW3 = ContextoDeObjs.ExecuteStoreQuery<VW_Reporte_Mapa>("exec VW_REPORTE_MAPA_MARKETING @DES_DEPARTAMENTO,@DES_PROVINCIA,@DES_DISTRITO,@SUPERVISOR,@ID_TIPO_CLASIFICACION", pW3).AsQueryable().ToList();

                var pStandardizedYesNo = new object[] { 
                    new SqlParameter("@DES_DEPARTAMENTO", departamento),
                    new SqlParameter("@DES_PROVINCIA", provincia), 
                    new SqlParameter("@DES_DISTRITO", distrito),
                    new SqlParameter("@SUPERVISOR", supervisor), 
                    new SqlParameter("@ID_TIPO_CLASIFICACION", StandardizedYesNo), 
                };
                var resultadoStandardizedYesNo = ContextoDeObjs.ExecuteStoreQuery<VW_Reporte_Mapa>("exec VW_REPORTE_MAPA_MARKETING @DES_DEPARTAMENTO,@DES_PROVINCIA,@DES_DISTRITO,@SUPERVISOR,@ID_TIPO_CLASIFICACION", pStandardizedYesNo).AsQueryable().ToList();

                var pW2STA = new object[] { 
                    new SqlParameter("@DES_DEPARTAMENTO", departamento),
                    new SqlParameter("@DES_PROVINCIA", provincia), 
                    new SqlParameter("@DES_DISTRITO", distrito),
                    new SqlParameter("@SUPERVISOR", supervisor), 
                    new SqlParameter("@ID_TIPO_CLASIFICACION", W2STA), 
                };
                var resultadoW2STA = ContextoDeObjs.ExecuteStoreQuery<VW_Reporte_Mapa>("exec VW_REPORTE_MAPA_MARKETING @DES_DEPARTAMENTO,@DES_PROVINCIA,@DES_DISTRITO,@SUPERVISOR,@ID_TIPO_CLASIFICACION", pW2STA).AsQueryable().ToList();

                var pW3STA = new object[] { 
                    new SqlParameter("@DES_DEPARTAMENTO", departamento),
                    new SqlParameter("@DES_PROVINCIA", provincia), 
                    new SqlParameter("@DES_DISTRITO", distrito),
                    new SqlParameter("@SUPERVISOR", supervisor), 
                    new SqlParameter("@ID_TIPO_CLASIFICACION", W3STA), 
                };
                var resultadoW3STA = ContextoDeObjs.ExecuteStoreQuery<VW_Reporte_Mapa>("exec VW_REPORTE_MAPA_MARKETING @DES_DEPARTAMENTO,@DES_PROVINCIA,@DES_DISTRITO,@SUPERVISOR,@ID_TIPO_CLASIFICACION", pW3STA).AsQueryable().ToList();

                var pStandardizedYesNoSTA = new object[] { 
                    new SqlParameter("@DES_DEPARTAMENTO", departamento),
                    new SqlParameter("@DES_PROVINCIA", provincia), 
                    new SqlParameter("@DES_DISTRITO", distrito),
                    new SqlParameter("@SUPERVISOR", supervisor), 
                    new SqlParameter("@ID_TIPO_CLASIFICACION", StandardizedYesNoSTA), 
                };
                var resultadoStandardizedYesNoSTA = ContextoDeObjs.ExecuteStoreQuery<VW_Reporte_Mapa>("exec VW_REPORTE_MAPA_MARKETING @DES_DEPARTAMENTO,@DES_PROVINCIA,@DES_DISTRITO,@SUPERVISOR,@ID_TIPO_CLASIFICACION", pStandardizedYesNoSTA).AsQueryable().ToList();

                var pW2REP = new object[] { 
                    new SqlParameter("@DES_DEPARTAMENTO", departamento),
                    new SqlParameter("@DES_PROVINCIA", provincia), 
                    new SqlParameter("@DES_DISTRITO", distrito),
                    new SqlParameter("@SUPERVISOR", supervisor), 
                    new SqlParameter("@ID_TIPO_CLASIFICACION", W2REP), 
                };
                var resultadoW2REP = ContextoDeObjs.ExecuteStoreQuery<VW_Reporte_Mapa>("exec VW_REPORTE_MAPA_MARKETING @DES_DEPARTAMENTO,@DES_PROVINCIA,@DES_DISTRITO,@SUPERVISOR,@ID_TIPO_CLASIFICACION", pW2REP).AsQueryable().ToList();

                var pW3REP = new object[] { 
                    new SqlParameter("@DES_DEPARTAMENTO", departamento),
                    new SqlParameter("@DES_PROVINCIA", provincia), 
                    new SqlParameter("@DES_DISTRITO", distrito),
                    new SqlParameter("@SUPERVISOR", supervisor), 
                    new SqlParameter("@ID_TIPO_CLASIFICACION", W3REP), 
                };
                var resultadoW3REP = ContextoDeObjs.ExecuteStoreQuery<VW_Reporte_Mapa>("exec VW_REPORTE_MAPA_MARKETING @DES_DEPARTAMENTO,@DES_PROVINCIA,@DES_DISTRITO,@SUPERVISOR,@ID_TIPO_CLASIFICACION", pW3REP).AsQueryable().ToList();

                var pTALLER = new object[] { 
                    new SqlParameter("@DES_DEPARTAMENTO", departamento),
                    new SqlParameter("@DES_PROVINCIA", provincia), 
                    new SqlParameter("@DES_DISTRITO", distrito),
                    new SqlParameter("@SUPERVISOR", supervisor), 
                    new SqlParameter("@ID_TIPO_CLASIFICACION", TALLER), 
                };
                var resultadoTALLER = ContextoDeObjs.ExecuteStoreQuery<VW_Reporte_Mapa>("exec VW_REPORTE_MAPA_MARKETING @DES_DEPARTAMENTO,@DES_PROVINCIA,@DES_DISTRITO,@SUPERVISOR,@ID_TIPO_CLASIFICACION", pTALLER).AsQueryable().ToList();

                var pVC = new object[] { 
                    new SqlParameter("@DES_DEPARTAMENTO", departamento),
                    new SqlParameter("@DES_PROVINCIA", provincia), 
                    new SqlParameter("@DES_DISTRITO", distrito),
                    new SqlParameter("@SUPERVISOR", supervisor), 
                    new SqlParameter("@ID_TIPO_CLASIFICACION", VC), 
                };
                var resultadoVC = ContextoDeObjs.ExecuteStoreQuery<VW_Reporte_Mapa>("exec VW_REPORTE_MAPA_MARKETING @DES_DEPARTAMENTO,@DES_PROVINCIA,@DES_DISTRITO,@SUPERVISOR,@ID_TIPO_CLASIFICACION", pVC).AsQueryable().ToList();

                var pRC = new object[] { 
                    new SqlParameter("@DES_DEPARTAMENTO", departamento),
                    new SqlParameter("@DES_PROVINCIA", provincia), 
                    new SqlParameter("@DES_DISTRITO", distrito),
                    new SqlParameter("@SUPERVISOR", supervisor), 
                    new SqlParameter("@ID_TIPO_CLASIFICACION", VC), 
                };
                var resultadoRC = ContextoDeObjs.ExecuteStoreQuery<VW_Reporte_Mapa>("exec VW_REPORTE_MAPA_MARKETING @DES_DEPARTAMENTO,@DES_PROVINCIA,@DES_DISTRITO,@SUPERVISOR,@ID_TIPO_CLASIFICACION", pRC).AsQueryable().ToList();

                resultadoW2.AddRange(resultadoW3);
                resultadoW2.AddRange(resultadoStandardizedYesNo);
                resultadoW2.AddRange(resultadoW2STA);
                resultadoW2.AddRange(resultadoW3STA);
                resultadoW2.AddRange(resultadoStandardizedYesNoSTA);
                resultadoW2.AddRange(resultadoW2REP);
                resultadoW2.AddRange(resultadoW3REP);
                resultadoW2.AddRange(resultadoTALLER);
                resultadoW2.AddRange(resultadoVC);
                resultadoW2.AddRange(resultadoRC);

                lista.AddRange(resultadoW2);
                return lista;
            }
            catch (Exception)
            {

            }
            return lista;
        }
    }
}
